package com.christina.config;

import com.christina.engine.singleton.ConfigurationManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

/**
 * 设计模式横幅展示
 * 在应用启动时展示设计模式集成信息
 * 
 * @author Christina
 */
@Slf4j
@Component
public class DesignPatternBanner {

    private final ConfigurationManager configurationManager;

    public DesignPatternBanner() {
        this.configurationManager = ConfigurationManager.getInstance();
    }

    @EventListener(ApplicationReadyEvent.class)
    public void displayBanner() {
        boolean designPatternsEnabled = configurationManager.getBoolean("design-patterns.enabled", true);
        
        if (designPatternsEnabled) {
            displayDesignPatternBanner();
        } else {
            displayLegacyBanner();
        }
    }

    private void displayDesignPatternBanner() {
        log.info("\n" +
                "╔══════════════════════════════════════════════════════════════════════════════════════╗\n" +
                "║                          🎯 Christina 智能助手 - 设计模式优化版                          ║\n" +
                "╠══════════════════════════════════════════════════════════════════════════════════════╣\n" +
                "║                                                                                      ║\n" +
                "║  🏗️  架构升级：基于9种经典设计模式的全新智能服务架构                                      ║\n" +
                "║                                                                                      ║\n" +
                "║  📋 已集成的设计模式：                                                                 ║\n" +
                "║  ├─ 🔗 责任链模式 (Chain of Responsibility) - 请求处理流水线                          ║\n" +
                "║  ├─ 📋 模板方法模式 (Template Method) - 服务执行框架                                  ║\n" +
                "║  ├─ 🏗️ 建造者模式 (Builder) - 参数构建优化                                           ║\n" +
                "║  ├─ 🎨 装饰器模式 (Decorator) - 响应增强功能                                         ║\n" +
                "║  ├─ 🎯 策略模式 (Strategy) - 智能路由决策                                            ║\n" +
                "║  ├─ 🏭 工厂模式 (Factory) - 执行器创建管理                                           ║\n" +
                "║  ├─ 🔄 状态模式 (State) - 对话状态管理                                               ║\n" +
                "║  ├─ 👁️ 观察者模式 (Observer) - 事件驱动架构                                          ║\n" +
                "║  └─ 🎯 单例模式 (Singleton) - 配置管理中心                                           ║\n" +
                "║                                                                                      ║\n" +
                "║  ⚡ 性能提升：                                                                        ║\n" +
                "║  ├─ 🚀 异步事件处理，提升响应速度                                                     ║\n" +
                "║  ├─ 🎯 智能路由决策，优化资源分配                                                     ║\n" +
                "║  ├─ 🔄 状态管理优化，提升对话连贯性                                                   ║\n" +
                "║  └─ 📊 实时监控统计，保障系统稳定                                                     ║\n" +
                "║                                                                                      ║\n" +
                "║  🛡️ 可靠性保障：                                                                      ║\n" +
                "║  ├─ 🔧 完整的错误处理机制                                                             ║\n" +
                "║  ├─ 📝 全面的审计日志记录                                                             ║\n" +
                "║  ├─ 🔄 优雅的降级兼容策略                                                             ║\n" +
                "║  └─ 💾 智能缓存与装饰增强                                                             ║\n" +
                "║                                                                                      ║\n" +
                "║  📊 系统信息：                                                                        ║\n" +
                "║  ├─ 版本：" + String.format("%-20s", configurationManager.getString("design-patterns.version", "1.0.0")) + "                                                    ║\n" +
                "║  ├─ 配置版本：" + String.format("%-15s", configurationManager.getConfigVersion()) + "                                                         ║\n" +
                "║  └─ 启动时间：" + String.format("%-15s", java.time.LocalDateTime.now().toString()) + "                                              ║\n" +
                "║                                                                                      ║\n" +
                "║  🎉 恭喜！您正在使用基于设计模式优化的 Christina 智能助手！                             ║\n" +
                "║     体验更快、更稳定、更智能的AI服务！                                                 ║\n" +
                "║                                                                                      ║\n" +
                "╚══════════════════════════════════════════════════════════════════════════════════════╝");
    }

    private void displayLegacyBanner() {
        log.info("\n" +
                "╔══════════════════════════════════════════════════════════════════════════════════════╗\n" +
                "║                          Christina 智能助手 - 传统兼容模式                             ║\n" +
                "╠══════════════════════════════════════════════════════════════════════════════════════╣\n" +
                "║                                                                                      ║\n" +
                "║  ⚠️  当前运行在传统兼容模式下                                                          ║\n" +
                "║                                                                                      ║\n" +
                "║  💡 建议启用设计模式优化以获得更好的性能和功能：                                        ║\n" +
                "║     设置 design-patterns.enabled=true                                               ║\n" +
                "║                                                                                      ║\n" +
                "╚══════════════════════════════════════════════════════════════════════════════════════╝");
    }
}